package com.hanxiaozhang.handler;



import org.springframework.util.CollectionUtils;
import org.springframework.validation.BindingResult;

import javax.validation.ConstraintViolation;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;


/**
 * 功能描述: <br>
 * 〈参数无效项辅助器〉
 *
 * @Author:hanxiaozhang
 * @Date: 2020/7/21
 */
public class HandleInvalidParameter {

    /**
     * ConstraintViolation转换成InvalidParameterList
     *
     * @param cvset
     * @param multiFlag
     * @return
     */
    public static List<String> convertConstraintViolationToInvalidParameterList(Set<ConstraintViolation<?>> cvset,boolean multiFlag) {

        if (CollectionUtils.isEmpty(cvset)) {
            return null;
        }

        List<String> invalidParameterList = new ArrayList<>();

        if (multiFlag) {
            cvset.forEach(x->{
                invalidParameterList.add(x.getMessage());
            });
        }else {
            invalidParameterList.add(((ConstraintViolation<?>)cvset.toArray()[0]).getMessage());
        }

        return invalidParameterList;
    }

    /**
     * BindingResult转换成InvalidParameterList
     *
     * @param bindingResult
     * @param multiFlag
     * @return
     */
    public static List<String> convertBindingResultToInvalidParameterList(BindingResult bindingResult, boolean multiFlag) {

        if (bindingResult == null || CollectionUtils.isEmpty(bindingResult.getFieldErrors())) {
            return null;
        }

        List<String> invalidParameterList = new ArrayList<>();

        if (multiFlag) {
            bindingResult.getFieldErrors().forEach(x -> {
                invalidParameterList.add(x.getDefaultMessage());
            });
        }else {
            invalidParameterList.add(bindingResult.getFieldErrors().get(0).getDefaultMessage());
        }


        return invalidParameterList;
    }
}
